The speed at which a personal computer operates is dependent upon a number of factors. Naturally, the speed of the microprocessor has a significant influence on the speed of operation of the overall computer system. Next to processor speed, in many cases, the video graphics subsystem has the most influence on the performance of the overall computer system. This is particularly true when a graphical user interface, such as MICROSOFT WINDOWS (by Microsoft Corporation of Redmond, Wash.) is used. In order to boost performance, most modern day personal computers use either a local video bus and an accelerated video card. A local video bus has a higher data bandwidth than the main peripheral bus, thus increasing the speed of bus operations associated with video. An accelerated video card allows the video card to perform selected video operations at high speed, rather than using the CPU to perform the operation. These two components accelerate the operation of the computer system in two ways: (1) the CPU no longer needs to perform low-level operations handled by the video card and (2) the data bandwidth for certain operations is greatly reduced, resulting in higher thru-put.
Whereas early video systems allocated a 128K memory buffer in the address space between 640K and 1M, present day memory controllers use a much larger frame buffer to accommodate higher resolutions and greater color depths. Resolutions from 640.times.480 pixels to 1280.times.1024 pixels are common on consumer machines. Further, color depths range from 16 colors (each color represented by a four bit nibble) to 16.7M colors (each color represented by a 24/32 bits). While normal video controllers usually do not support the highest color depth at the highest resolution, it is not uncommon for a controller to support the highest resolution at 256 colors or the highest color depth at 800.times.600 pixels. Thus, it is not uncommon for modern day video controllers to have a 2M frame buffer to accommodate these modes of operation. Many cards are configurable to multiple frame buffer sizes, typically 512K, 1M and 2M; the smaller frame buffer sizes will not provide the user with the full range of operating modes.
With larger frame buffer sizes, the address space of the frame buffer cannot be accommodated in the range from 640K to 1M. In an attempt to address this problem, many video controller cards use a 64k buffer in the 640K to 1M address space as a window to the larger video frame buffer. The problem with this approach is that it requires an indirect method of addressing the frame buffer according to a "banking" scheme. Such a banking scheme increases the complexity of addressing and slows the operation of the video subsystem. Consequently, it is desirable to allocate a portion of the computer system's memory address space to the large video frame buffer so that the frame buffer can be addressed directly without banking.
In MICROSOFT WINDOWS enhanced mode, allocating the memory address space in this manner is relatively simple. This is because in WINDOWS enhanced mode memory management services are provided by a built-in DOS Protected Mode Interface ("DPMI") memory manager. A physical address space can be requested by making a call to DPMI. In response to the request, DPMI returns a linear address (which may differ from the physical address) for addressing the requested address space. DPMI manages the page directories and page tables to properly allocate the requested address space.
In MICROSOFT WINDOWS standard mode, however, the allocation is more complicated because of the MICROSOFT WINDOWS initialization routine. During its initialization in standard mode, MICROSOFT WINDOWS uses a third-party memory manager, if present, to create the page directory entries and page tables that are necessary to access the address space using the paged addressing capabilities of INTEL 80386 and 80486 or equivalent (hereinafter '386 and '486 class) microprocessors. Typical third-party memory managers used for this purpose are QEMM by Quarterdeck Office Systems of Santa Monica, Calif. and 386MAX by Qualitas of Bethesda, Md. One problem with these memory managers is that, in order to minimize the amount of memory taken up by page directory entries and page tables, they build only enough page directory entries and page tables to access populated locations in the memory address space (the computer system's physically installed main memory). Thus, for a computer system with a 4M memory, these memory managers will only build the page tables and page directories through a 4M address space. If the frame buffer were addressed through the 4M-6M address space, for example, an addressing error would occur. It should be noted that MICROSOFT WINDOWS will build page tables for the entire address space (up to 16M for an Industry Standard Architecture or "ISA" bus system) in standard mode if no third-party memory manager is executing when WINDOWS is loaded.
MICROSOFT WINDOWS standard mode is used in several common circumstances: either because of hardware constraints such as the amount of system memory, because of better performance with certain hardware configurations (such as a machine with 2M of system memory), or because an application program written for an earlier version of WINDOWS will not run in WINDOWS 3.1 enhanced mode. Consequently, it is important to provide direct addressing of the frame buffer for WINDOWS standard mode in order to provide high speed video operations under those circumstances.
Therefore, a need has arisen in the industry for a method and apparatus for direct addressing of a video frame buffer in WINDOWS standard mode in an address space above that of physical memory.